﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using DHJ.Cost.Workshops;

namespace DHJ.Cost.CostAccounting.Cache
{
    public interface ICostAccountingCache
    {
        Task<CostAccountingCacheItem> GetCacheItemOrNull(Guid id);

        Task ClearCache();

        Task InitCostAccountingCache();

        Task<List<Guid>> GetCacheKeys();

        Task<List<CostAccountingCacheItem>> GetCacheItems();

        Task<List<CostAccountingCacheItem>> GetCacheItems(List<Guid> keys);

        Task InitAnnualCostCache();
        Task InitWorkshopCostCache();

        Task<List<List<AnnualCostCacheItem>>> GetAnnualCacheItems();

        Task<List<AnnualCostCacheItem>> GetAnnualCacheItems(int year);

        Task<List<List<WorkshopCostCacheItem>>> GetWorkshopCacheItems();

        Task<List<WorkshopCostCacheItem>> GetWorkshopCacheItems(Workshop workshop);
    }
}
